package top.infopub.mgr.bpa.dao;


import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import top.infopub.generic.GenericDao;
import top.infopub.mgr.bpa.domain.OtherCotDomain;
import top.infopub.mgr.bpa.vo.OtherCotVo;
import top.infopub.mgr.bpast.domain.BpastOtherDomain;
import top.infopub.model.bpa.OtherCot;

import com.github.pagehelper.Page;


/** 其他费合同(BPA_OTHER_COT) **/
public interface OtherCotDao extends GenericDao<OtherCot, String> {

    /**
     * 根据条件查询其他费合同记录
     * @param OtherCotVo
     * @return 
     * @see
     */
    Page<OtherCotDomain> selectByDomainWhere(OtherCotVo otherCotVo);

    /**
     * 根据条件查询其他费合同记录--我审批的列表
     * @param OtherCotVo
     * @return 
     * @see
     */
    Page<OtherCotDomain> selectMyCheckByDomainWhere(OtherCotVo otherCotVo);

    /**
     * 添加-其他费合同
     */
    void insertById(OtherCot otherCot);

    /**
     * 判断其他费合同名称是否存在
     */
    List<OtherCot> isExistOtherCotName(@Param("otherCotName") String otherCotName,
                                 @Param("proCode") String proCode);

    /**
     * 判断其他费补充合同名称是否存在
     */
    List<OtherCot> isExistOtherCotSaName(@Param("otherCotSaName") String otherCotSaName,
                                   @Param("proCode") String proCode);

    /**
     * 根据项目编号取最新的其他费合同信息
     */
    OtherCotDomain selectNewsByProCode(@Param("proCode") String proCode);

    /**
     * 根据项目编号获取最新的版本号
     */
    OtherCot selectaVersionByProCode(@Param("proCode") String proCode);
    
    /**
     * 根据项目编号获取最新的信息
     */
    OtherCot selectAddTimeByProCode(@Param("proCode") String proCode);

    /**
     * 根据项目编号获取父id
     */
    OtherCot selectByProCodes(@Param("proCode") String proCode);

    /**
     * 根据id查询详情记录
     * @param id 主键id
     * @return 
     * @see
     */
    OtherCotVo queryById(String id);

    /**
     * 根据合同名称计算对内结算中的 期数(已审批通过)
     */
    int countByName(@Param("names") String names);
    
    /**
     * 根据refId查询信息
     */
    OtherCotDomain selectById(String id);
    
    /**
     * 查询所有其他费合同信息
     */
    List<OtherCot> selectByOtherCots(@Param("visibleProCodes") String visibleProCodes);
    
    /**
     * 根据条件查询商务驾驶舱-其他合同分页记录
     * @param where
     * @return 
     * @see
     */
    Page<BpastOtherDomain> selectBpastByDomainWhere(Map<String, Object> where);

}